package com.byd.sealmanage.service.impl;


import com.alibaba.fastjson.JSONObject;
import com.byd.sealmanage.config.CommonResultOutput;
import com.byd.sealmanage.service.ExportExcelService;
import com.byd.sealmanage.util.GlobalContants;
import com.byd.sealmanage.util.JsonUtil;
import com.byd.sealmanage.util.UUIDGenerator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@Service
public class ExportExcelServiceImpl implements ExportExcelService {

    /**
     * 上传文件
     * @param file
     * @return
     */
    @Override
    public JSONObject uploadPicture(MultipartFile file) {
        CommonResultOutput commonResultOutput;
        JSONObject jsonObject = new JSONObject();
        String prefix="";
        String dateStr="";
        //保存上传
        OutputStream out = null;
        InputStream fileInput=null;
        try{
            if(file!=null){
                //原名称
                String originalName = file.getOriginalFilename();
                //获取文件类型，原名称的后缀
                prefix=originalName.substring(originalName.lastIndexOf(".")+1);
                Date date = new Date();
                //uuid随机数
                String uuid = UUIDGenerator.getUUID()+"";
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                dateStr = simpleDateFormat.format(date);
                String filepath = "D:\\fuming\\sealPicture\\" + dateStr+"\\"+uuid+"." + prefix;

                File files=new File(filepath);
                //打印查看上传路径
                System.out.println(filepath);
                //避免文件创建失败（改文件所在的文件加不存在所以创建它所在的文件目录），注意mkdirs()方法 ，如果文件夹已经存在，是不会再次创建的
                if(!files.getParentFile().exists()){
                    files.getParentFile().mkdirs();
                }
                //图片保存到指定文件夹中
                file.transferTo(files);
                Map<String,Object> map2=new HashMap<>();
                map2.put("src","D:/fuming/sealPicture/"+ dateStr+"/"+uuid+"." + prefix);
                jsonObject.put("data",map2);
                commonResultOutput = new CommonResultOutput(200,"文件片成功上传", jsonObject);
                return JsonUtil.toJSONObject(commonResultOutput);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            try {
                if(out!=null){
                    out.close();
                }
                if(fileInput!=null){
                    fileInput.close();
                }
            } catch (IOException e) {
            }
        }
        jsonObject.put(GlobalContants.MSG, "图片上传失败");
        commonResultOutput = new CommonResultOutput("9999", jsonObject);
        return JsonUtil.toJSONObject(commonResultOutput);
    }
}
